export {}
// 函数如何在ts中声明
function sum (num1: number, num2: number) : number {
    return num1 + num2
}

let result = sum(1,2)
result = 123 
// result = 'abc' // no
// const result2 = sum('1',2) // no

// 函数的变体
// 函数表达式
const sum2 = function (num1: number, num2: number) : number {
    return num1 + num2
}
// 箭头函数
const sum3 = (num1: number, num2: number) :number => {
    return num1 + num2
}

// 函数表达式的函数类型和函数分开定义的方式
type AddFn = (num1: number, num2: number) => number

const fn: AddFn = (num1, num2) => {
    return num1 + num2
}

let result2=  fn(1,2)

result2 = 123
// result2 = 'a' // no

// 如果函数没有具体的返回类型，指定成 void
function hello(str: string) : void {
    console.log(str)
}

// 注意 void 和 undefined 是两个类型，是两回事
function hello2(str: string) : undefined {
    console.log(str)
    return undefined
}

// 函数不指定返回值类型，默认推断为 void 类型
function hello3(name: string) {
    console.log('Hello', name);
}